home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / dev / c / qtools0.2-src.lha / src / libqtools / mdl.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-07-18  |  2.8 KB  |  155 lines

  1. #ifndef    MDL_H
  2. #define    MDL_H
  3.  
  4. /*
  5.  * ============================================================================
  6.  * structures
  7.  * ============================================================================
  8.  */
  9. #define MAGIC_MDL_Q1    MKID('I','D','P','O')    /* 0x4944504F */
  10. #define MAGIC_MDL_Q2    MKID('I','D','P','2')    /* 0x4944504F */
  11.  
  12. #define MDL_VERSION_Q1    6
  13. #define MDL_VERSION_Q2    8
  14.  
  15. #define MDL_ONSEAM    0x0020
  16.  
  17. typedef enum {
  18.   ST_SYNC = 0, ST_RAND
  19. } synctype_t;
  20.  
  21. typedef enum {
  22.   MDL_SINGLE = 0, MDL_GROUP
  23. } aliasframetype_t;
  24.  
  25. typedef enum {
  26.   MDL_SKIN_SINGLE = 0, MDL_SKIN_GROUP
  27. } aliasskintype_t;
  28.  
  29. struct mdlheader {
  30.   int ident;
  31.   int version;
  32.   vec3_t scale;
  33.   vec3_t scale_origin;
  34.   float boundingradius;
  35.   vec3_t eyeposition;
  36.   int numskins;
  37.   int skinwidth;
  38.   int skinheight;
  39.   int numverts;
  40.   int numtris;
  41.   int numframes;
  42.   synctype_t synctype;
  43.   int flags;
  44.   float size;
  45. };
  46.  
  47. struct stvert {
  48.   int onseam;
  49.   int s;
  50.   int t;
  51. };
  52.  
  53. /*
  54.  * disk-structures
  55.  */
  56.  
  57. struct dtriangle {
  58.   int facesfront;
  59.   int vertindex[3];
  60. };
  61.  
  62. #define DT_FACES_FRONT                0x0010
  63.  
  64. struct trivertex {
  65.   unsigned char v[3];
  66.   unsigned char lightnormalindex;
  67. };
  68.  
  69. struct daliasframe {
  70.   struct trivertex bboxmin;                    /* lightnormal isn't used */
  71.   struct trivertex bboxmax;                    /* lightnormal isn't used */
  72.  
  73.   char name[16];                        /* frame name from grabbing */
  74. };
  75.  
  76. struct daliasgroup {
  77.   int numframes;
  78.  
  79.   struct trivertex bboxmin;                    /* lightnormal isn't used */
  80.   struct trivertex bboxmax;                    /* lightnormal isn't used */
  81. };
  82.  
  83. struct daliasskingroup {
  84.   int numskins;
  85. };
  86.  
  87. struct daliasinterval {
  88.   float interval;
  89. };
  90.  
  91. struct daliasskininterval {
  92.   float interval;
  93. };
  94.  
  95. struct daliasframetype {
  96.   aliasframetype_t type;
  97. };
  98.  
  99. struct daliasskintype {
  100.   aliasskintype_t type;
  101. };
  102.  
  103. /*
  104.  * local program-structures
  105.  */
  106.  
  107. struct aliaspackage {
  108.   /* single frame or group of frames */
  109.   aliasframetype_t type;
  110.   /* either a daliasframe_t or group info */
  111.   void *pdata;
  112.   /* only used for frames in groups */
  113.   float interval;
  114.   /* only used by group headers */
  115.   int numgroupframes;
  116.  
  117.   char name[16];
  118. } __packed;
  119.  
  120. struct aliasskinpackage {
  121.   /* single skin or group of skiins */
  122.   aliasskintype_t type;
  123.   /* either a daliasskinframe_t or group info */
  124.   void *pdata;
  125.   /* only used for skins in groups */
  126.   float interval;
  127.   /* only used by group headers */
  128.   int numgroupskins;
  129. } __packed;
  130.  
  131. struct vertexnormals {
  132.   int numnormals;
  133.   float normals[20][3];
  134. } __packed;
  135.  
  136. struct trivert {
  137.   vec3_t v;
  138.  
  139.   int lightnormalindex;
  140. } __packed;
  141.  
  142. /*
  143.  * ============================================================================
  144.  * globals
  145.  * ============================================================================
  146.  */
  147.  
  148. /*
  149.  * ============================================================================
  150.  * prototypes
  151.  * ============================================================================
  152.  */
  153.  
  154. #endif
  155.